﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MoroMoro.Samples.ToDoList.Base.Persistence.Fake
{
    /// <summary>
    /// メモリ上のコレクションを使用して実装される作業スペースのファクトリの基本クラスです。
    /// </summary>
    public abstract class FWorkspaceFactoryBase : IWorkspaceFactory
    {
        /// <summary>
        /// 作業スペースを生成します。
        /// </summary>
        /// <returns>作業スペース。</returns>
        public IWorkspace Create()
        {
            var allEntityList = GetAllEntityList();
            return new FWorkspace(allEntityList);
        }

        /// <summary>
        /// 全てのエンティティを格納するための、メモリ上のコレクションを取得します。
        /// </summary>
        /// <returns>全てのエンティティを格納するための、メモリ上のコレクション。</returns>
        protected abstract List<object> GetAllEntityList();
    }
}
